--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / tests / backend / schema_versions_contract_helpers.py
Displaying Raw • Download
tests/backend/schema_versions_contract_helpers.py dev (af76f09d) Text, 1.27 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Helpers for the schema version fixture manifest contract check."""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787json
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Tff7b72def Td2a8ffderive_schema_versions_manifestTb4b4b4(Te6edf3latest_versionTb4b4b4: Tffa657intTb4b4b4) Tff7b72-Tff7b72> Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4]Tb4b4b4:
T8b949e"""Return the manifest entries expected for a given latest schema version.
Mirrors the fixture selection in scripts/ci/schema_fixture_generate.py:
the latest version plus up to two prior versions when they exist.
"""
Te6edf3versions Tff7b72= Tb4b4b4[Te6edf3latest_versionTb4b4b4]
Tff7b72if Te6edf3latest_version Tff7b72>Tff7b72= T79c0ff1Tb4b4b4:
Te6edf3versionsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3latest_version Tff7b72- T79c0ff1Tb4b4b4)
Tff7b72if Te6edf3latest_version Tff7b72>Tff7b72= T79c0ff2Tb4b4b4:
Te6edf3versionsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3latest_version Tff7b72- T79c0ff2Tb4b4b4)
Te6edf3versions Tff7b72= Tffa657sortedTb4b4b4(Tffa657setTb4b4b4(Te6edf3versionsTb4b4b4)Tb4b4b4)
Te6edf3manifestTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4] Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fflatest_versionTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3latest_versionTb4b4b4)Tb4b4b4}
Tff7b72for Te6edf3ver Tff7b72in Te6edf3versionsTb4b4b4:
Te6edf3manifestTb4b4b4[Ta5d6fffTa5d6ff"Ta5d6ffvTffd700{Te6edf3verTffd700}Ta5d6ff"Tb4b4b4] Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffschema_vTffd700{Te6edf3verTffd700}Ta5d6ff.dbTa5d6ff"
Tff7b72return Te6edf3manifest
Tff7b72def Td2a8ffload_schema_versions_manifestTb4b4b4(Te6edf3fixture_pathTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4]Tb4b4b4:
Tff7b72return Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3fixture_pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffwrite_schema_versions_manifestTb4b4b4(
Te6edf3fixture_pathTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3manifestTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4]
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3fixture_pathTff7b72.Td2a8ffparentTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3fixture_pathTff7b72.Td2a8ffwrite_textTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3manifestTb4b4b4, Te6edf3indentTff7b72=T79c0ff2Tb4b4b4) Tff7b72+ Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────